package com.block.risk.service.type.item;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.block.risk.model.result.RiskJudgeResult;
import com.block.risk.service.IDefaultItemService;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;

@Service
public class ChuangDeItemService implements IDefaultItemService {

    private List<String> valueListSelf = Arrays.asList("0", "(0,500)", "[500,1000)");

    @Override
    public RiskJudgeResult getControlResult(JSONObject resultDetial) {

        /**
         * 芝麻信用分600+ 近一个月了履约1笔以上，有借款，近六个月没有逾期
         *
         * 芝麻分600以上，
         *
         * 近6个月M0=0，
         * 近一个月贷款机构大于1，
         * 近一个月贷款金额大于1000，
         * 近一个月履约次数大于2，
         * 近一个月履约金额大于1000），
         * 扣款失败比数/履约次数<=50%
         */

        /**
         * 芝麻信用分600+，年龄22-48周岁，
         *
         * 近一个月了履约两笔以上，
         * 近六个月没有逾期，
         * 成功扣款比数大于失败扣款比数，
         * 偏远地区不要（港澳台新疆西藏宁夏内蒙甘肃）
         */

        /**
         * 近一个月有履约，近一个月有借款
         */

        /**
         * 芝麻信用分600+
         * 近一个月了履约1笔以上，
         * 有借款，
         * 近六个月没有逾期
         * 创得改成这个吧
         */

        /**
         * 芝麻分600以上，
         * 近6个月M0=1，
         * 近一个月贷
         * （款机构大于1，贷款金额大于1000，履约次数大于2，履约金额大于1000），
         * 扣款失败比数/履约次数<=50%
         */
        /**
         * 近6个月无逾期
         */


        RiskJudgeResult riskJudgeResult = new RiskJudgeResult();
        riskJudgeResult.setPass(false);

        JSONObject currentReportDetail = resultDetial.getJSONObject("current_report_detail");
        JSONObject behaviorReportDetail = resultDetial.getJSONObject("behavior_report_detail");
        JSONObject applyReportDetail = resultDetial.getJSONObject("apply_report_detail");

        if (ObjectUtil.isEmpty(behaviorReportDetail)){
            riskJudgeResult.setResult("行为数据结果为空；【behavior_report_detail】");
            return riskJudgeResult;
        }

//         近6个月逾期M0 = 0
        String numberSixM0 = behaviorReportDetail.getString("B22170025");
        if (Integer.valueOf(numberSixM0) > 0){
            riskJudgeResult.setResult(StrUtil.format("近6个月逾期M0不通过；【{}】", numberSixM0));
            return riskJudgeResult;
        }

        String numberRate = behaviorReportDetail.getString("B22170034");
        numberRate = numberRate.replace("%", "");
        if (Integer.valueOf(numberRate) < 50){
            riskJudgeResult.setResult(StrUtil.format("订单比例70以上不通过；【{}】", numberRate));
            return riskJudgeResult;
        }

        // 近1 个月贷款机构数 B22170016
        String loanJiGouNumber = behaviorReportDetail.getString("B22170016");
        if (Integer.valueOf(loanJiGouNumber) < 1){
            riskJudgeResult.setResult(StrUtil.format("近1 个月贷款机构数1个以上不通过；【{}】", loanJiGouNumber));
            return riskJudgeResult;
        }

        // 近一个月有借款
        String numberLoanOne = behaviorReportDetail.getString("B22170002");
        if (Integer.valueOf(numberLoanOne) < 1){
            riskJudgeResult.setResult(StrUtil.format("近一个月贷款机构放款笔数1笔以上不通过；【{}】", numberLoanOne));
            return riskJudgeResult;
        }

        // 近1个月货款总金额 B22170007
        String loanOneAmount = behaviorReportDetail.getString("B22170007");
        if (valueListSelf.contains(loanOneAmount)){
            riskJudgeResult.setResult(StrUtil.format("近1个月货款总金额>1000不通过；【{}】", loanOneAmount));
            return riskJudgeResult;
        }

        // B22170040 近1 个月履约贷款总金额
        String repayAmount = behaviorReportDetail.getString("B22170040");
        if (valueListSelf.contains(repayAmount)){
            riskJudgeResult.setResult(StrUtil.format("一个月还款款金额>1000不通过；【{}】", repayAmount));
            return riskJudgeResult;
        }


        // B22170045 近1 个月履约贷 款次数
        String repayNumber = behaviorReportDetail.getString("B22170045");
        if (Integer.valueOf(repayNumber) < 2){
            riskJudgeResult.setResult(StrUtil.format("近1 个月履约贷 款次数2笔以上不通过；【{}】", repayNumber));
            return riskJudgeResult;
        }



        // 近1个月货款总金额 B22170007
//        String B22170035 = behaviorReportDetail.getString("B22170035");// 扣款失败
//        String B22170045 = behaviorReportDetail.getString("B22170045");// 履约次数
//        if (Integer.valueOf(B22170045) <= Integer.valueOf(B22170035)){
//            riskJudgeResult.setResult(StrUtil.format("扣款成功大于扣款失败；成功【{}】失败【{}】", B22170045, B22170035));
//            return riskJudgeResult;
//        }

//

//
//        // B22170045 近1 个月履约贷 款次数
//        String repayNumber = behaviorReportDetail.getString("B22170045");
//        if (Integer.valueOf(repayNumber) < 2){
//            riskJudgeResult.setResult(StrUtil.format("近1 个月履约贷 款次数2笔以上不通过；【{}】", repayNumber));
//            return riskJudgeResult;
//        }
//
//        // 近1个月货款总金额 B22170007
//        String loanOneAmount = behaviorReportDetail.getString("B22170007");
//        if (valueListSelf.contains(loanOneAmount)){
//            riskJudgeResult.setResult(StrUtil.format("近1个月货款总金额>1000不通过；【{}】", loanOneAmount));
//            return riskJudgeResult;
//        }
//

//


        riskJudgeResult.setPass(true);
        riskJudgeResult.setResult("全景分控通过");
        return riskJudgeResult;
    }
}
